package com.example.j280_webproject.day038.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class StudentJDBC {
    /**
     * 通过学生身份证号码查询学生id和学生姓名，并分别写入到String数组中
     *
     * @param conn               数据库连接池
     * @param card               学生身份证号
     * @return                   返回strArrays数组
     * @throws SQLException      SQL异常
     */
    public String[] selectByCard(Connection conn,String card) throws SQLException {
        /*存两个元素
                   0下标  如果存在学生记录，则存放学生的名称，如果不存在，则默认为null
                   1下标  如果存在学生记录，则存放学生的id，如果不存在，则默认为null
         */
        String[] strArrays = new String[2];
        String sql = "select id,studentName from student038 where card=?";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);                // 预处理执行集  目的是为了防范SQL注入攻击
        preparedStatement.setString(1,card);
        ResultSet resultSet = preparedStatement.executeQuery();                          // 因为身份证是唯一的，所以如果查询成功，只会返回一条数据
        if (resultSet.next()){
            strArrays[0] = resultSet.getString("studentName");
            strArrays[1] = resultSet.getString("id");                       // mysql会根据我们需要的类型，完成基本的类型转换，比如mysql中是int类型，我们接收可以设定为String类型
        }
        return strArrays;
    }

    /**
     * 更新学生信息表指定id的学生信息
     *
     * @param conn               数据库连接池
     * @param class_id           班级id
     * @param student_id         学生id
     * @throws SQLException      SQL异常
     */
    public void updateById(Connection conn,int class_id,int student_id) throws SQLException {
        String sql="update student038 set class_id=? where id=?";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);                // 预处理执行集  目的是为了防范SQL注入攻击
        preparedStatement.setInt(1,class_id);
        preparedStatement.setInt(2,student_id);
        preparedStatement.execute();                                                     //执行sql语句
    }

    /**
     * 插入学生信息
     *
     * @param conn               数据库连接池
     * @param studentName        学生姓名
     * @param card               学生身份证号
     * @throws SQLException      SQL异常
     */
    public void insert(Connection conn ,String studentName ,String card) throws SQLException {
        String sql = "insert into student038( studentName, card ) values (?,?)";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);                // 预处理执行集  目的是为了防范SQL注入攻击
        preparedStatement.setString(1,studentName);
        preparedStatement.setString(2,card);
        preparedStatement.execute();                                                     //执行sql语句
    }
}
